package com.bird.user.domain

import com.bird.component.lang.util.isnull
import com.bird.component.lang.util.paramcheck.toCheck

/**
 * 用户领域服务
 */
class UserHandler(private val userRepository: UserRepository){
    /**
     * 用户注册
     */
    fun register(userEntity: UserEntity) {
        //检查用户是否存在
        toCheck {
            customize(userEntity.username) { username ->
                userRepository.oneUserByUsername(username).isnull()
            }.orTip("用户已存在")
        }
        // 生成用户id
        userEntity.generateId()
        // 标记新增
        userEntity.toNew()
        // 保存用户
        storeUser(userEntity)
    }
    /**
     * 保存用户
     */
    private fun storeUser(userEntity: UserEntity) {
        //对实体进行检验
        userEntity.validate()
        //保存用户
        userRepository.save(userEntity)
    }



}